package com.qf.service.impl;

import com.qf.pojo.Order;
import com.qf.service.OrderService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Value;

import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

//@Service
//利用dubbo的@Service注解，将需要暴露出去的服务注册到zookeeper注册中心

/**
 *  功能：
 *      ① 向当前应用的spring容器中注入一个OrderService类型的对象。在当前应用中是可以使用@Autowired完成依赖注入
 *      ② 将当前提供方的信息以url的方式注册到zookeeper注册中心。在当前项目中再启动另外一个容器（服务器），这个容器（服务器）的作用等待消费方发起远程访问的
 *          这个容器（服务器）的协议和端口号是我们自己定义的
 *              dubbo协议--内部使用的是netty服务
 *              端口号是我们配置的20881
 */
@Service(timeout = 6000,version = "2.0")
public class OrderServiceImpl implements OrderService {

    @Value("${server.port}")
    private Integer port;

    @Override
    public List<Order> findByUid(Integer uid) throws InterruptedException {

        if (port == 81){
            Thread.sleep(2000);
        }

        //模拟耗时
//        Thread.sleep(5000);

        //根据用户id，数据库查询用户的订单信息
        Order order1 = new Order(1,uid,1000d,"用户丁1:" + port);
        Order order2 = new Order(2,uid,2000d,"用户丁2:" + port);
        Order order3 = new Order(3,uid,3000d,"用户丁3:" + port);

        List<Order> orders = new ArrayList<>();
        orders.add(order1);
        orders.add(order2);
        orders.add(order3);

        System.out.println("order查询业务执行完成....");
        return orders;
    }


    public static void main(String[] args) {
        String decode = URLDecoder.decode("dubbo%3A%2F%2F192.168.247.1%3A20881%2Fcom.qf.service.OrderService%3Fanyhost%3Dtrue%26application%3Dqf-order%26bean.name%3DServiceBean%3Acom.qf.service.OrderService%26deprecated%3Dfalse%26dubbo%3D2.0.2%26dynamic%3Dtrue%26generic%3Dfalse%26interface%3Dcom.qf.service.OrderService%26methods%3DfindByUid%26pid%3D16024%26register%3Dtrue%26release%3D2.7.3%26side%3Dprovider%26timestamp%3D1685934199359");
        System.out.println(decode);
    }
}
